Рекомендации по настройке hostname & fqdn¶
Введение¶
Компьютеры в домене используют FQDN-имена (полные доменные имена), поэтому администраторам крайне важно понимать механизм их формирования. В операционных системах Linux для получения ответа на этот вопрос используется информация сразу из нескольких источников.
Рекомендации¶
Утилита hostname без параметров возвращает локальное имя машины из файла виртуальной системы ядра /proc/sys/kernel/hostname. Есть также файл /etc/hostname, который позволяет менять имя, но изменения вступают в силу только после перезагрузки. Можно поменять имя хоста без перезагрузки, используя утилиту hostnamectl set-hostname.
При использовании дистрибутивов Debian рекомендуется в качестве имени хоста устанавливать короткое имя, например, «pc-1», а не полное доменное имя FQDN, например, «pc-1.ald.company.local». В этом случае при вызове утилиты hostname без параметров будет отображаться значение «pc-1». Но можно в качестве имени хоста установить и полное имя FQDN, т. е. «pc-1.ald.company.local», тогда очевидно, что вызов hostname без параметров будет уже выдавать «pc-1.ald.company.local», а не «pc-1». Разница проявит себя в тех ситуациях, где используется имя хоста, например:
Утилита
hostnameс ключом-fв соответствии с настройками/etc/nsswitch.confсначала ищет FQDN хоста по файлу/etc/hosts, который содержит строки вида:
IP-адрес каноническое_имя_узла [псевдонимы…]
При выполнении алгоритма локальное имя хоста используется для поиска соответствующей строки в файле /etc/hosts. Если совпадение найдено, в качестве FQDN хоста используется каноническое имя, указанное в этой строке.
Если в качестве hostname будет выступать FQDN, то поиск сработает, но не по псевдониму из строки, а по каноническому имени узла.
Если в файле
hostsискомая запись не найдена, то в соответствии с настройками/etc/nsswitch.confвыполняется поиск хоста по DNS. Так как имяhostname, например, «pc-1», не содержит точек (см. параметрndots), то к нему добавляется суффиксsearchиз файла/etc/resolv.conf, например, «ald.company.local». В результате формируется полное имя FQDN «pc-1.ald.company.local». Для сформированного FQDN система запрашивает A- и AAAA-записи у DNS-сервера. Если DNS-сервер вернет какую-нибудь запись, даже с IP-адресом, который не назначен ни одному из интерфейсов этого компьютера, то этот FQDN будет считаться валидным.
При вводе машины в домен инструментами ALD Pro именем хоста устанавливается FQDN. При вводе в домен ванильного Debian с помощью ванильного FreeIPA-клиента поведение продукта в части hostname аналогичное — именем хоста устанавливается FQDN машины. Такой подход принят в Red Hat, и он наследуется при использовании FreeIPA, т. к. она сейчас разрабатывается как upstream Red Hat IdM.
При данном подходе вызов команды hostname без параметров будет выдавать FQDN хоста. Для серверов будет правильно указать в файле /etc/hosts строку, которая будет соответствовать этому FQDN, чтобы hostname -f работал без обращения к DNS, это и быстрее, и надежнее.
На серверах предпочитаемая форма hosts выглядит следующим образом:
127.0.0.1 localhost
10.0.1.2 dc-1.ald.domain.local dc-1
# 127.0.1.1 dc-1 - данную строку нужно закомментировать или удалить, т.к. адрес локальной петли будет иметь приоритет по отношению к любому другому локальному адресу
На клиентских машинах и серверах, где нет служб, настроенных на конкретный адрес локальной сети, можно разрешать доменное имя в IP-адрес локальной петли.
127.0.0.1 localhost
127.0.1.1 pc-1.ald.domain.local pc-1
Если в hosts есть две записи для имени сервера, то при разрешении имени сервера предпочтение отдается адресу 127.0.1.1, так как он имеет больший приоритет. Настройки приоритетов указаны в файле /etc/gai.conf.
127.0.0.1 localhost
127.0.1.1 pc-1.ald.domain.local pc-1
10.0.1.2 pc-1.ald.domain.local pc-1